home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 April: Mac OS SDK / Dev.CD Apr 99 SDK1.toast / Development Kits / QuickTime / QuickTime 3 Interfaces & Libs / QTDevWin / CIncludes / FileTransfers.h < prev    next >
Encoding:
C/C++ Source or Header  |  1998-08-21  |  14.0 KB  |  423 lines  |  [TEXT/dosa]

  1. /*
  2.      File:        FileTransfers.h
  3.  
  4.      Contains:    CommToolbox File Transfer Manager Interfaces.
  5.  
  6.      Version:    Technology:    System 7.5
  7.                  Release:    QuickTime 3.0
  8.  
  9.      Copyright:    © 1988-1998 by Apple Computer, Inc., all rights reserved
  10.  
  11.      Bugs?:        Please include the the file and version information (from above) with
  12.                  the problem description.  Developers belonging to one of the Apple
  13.                  developer programs can submit bug reports to:
  14.  
  15.                      devsupport@apple.com
  16.  
  17. */
  18. #ifndef __FILETRANSFERS__
  19. #define __FILETRANSFERS__
  20.  
  21. #ifndef __CONDITIONALMACROS__
  22. #include <ConditionalMacros.h>
  23. #endif
  24. #ifndef __STANDARDFILE__
  25. #include <StandardFile.h>
  26. #endif
  27. #ifndef __CTBUTILITIES__
  28. #include <CTBUtilities.h>
  29. #endif
  30. #ifndef __CONNECTIONS__
  31. #include <Connections.h>
  32. #endif
  33. #ifndef __FILES__
  34. #include <Files.h>
  35. #endif
  36. #ifndef __TERMINALS__
  37. #include <Terminals.h>
  38. #endif
  39.  
  40.  
  41.  
  42. #if PRAGMA_ONCE
  43. #pragma once
  44. #endif
  45.  
  46. #ifdef __cplusplus
  47. extern "C" {
  48. #endif
  49.  
  50. #if PRAGMA_IMPORT
  51. #pragma import on
  52. #endif
  53.  
  54. #if PRAGMA_STRUCT_ALIGN
  55.     #pragma options align=mac68k
  56. #elif PRAGMA_STRUCT_PACKPUSH
  57.     #pragma pack(push, 2)
  58. #elif PRAGMA_STRUCT_PACK
  59.     #pragma pack(2)
  60. #endif
  61.  
  62.  
  63. enum {
  64.     curFTVersion                = 2                                /* current file transfer manager version*/
  65. };
  66.  
  67.  
  68. enum {
  69.                                                                 /* FTErr    */
  70.     ftGenericError                = -1,
  71.     ftNoErr                        = 0,
  72.     ftRejected                    = 1,
  73.     ftFailed                    = 2,
  74.     ftTimeOut                    = 3,
  75.     ftTooManyRetry                = 4,
  76.     ftNotEnoughDSpace            = 5,
  77.     ftRemoteCancel                = 6,
  78.     ftWrongFormat                = 7,
  79.     ftNoTools                    = 8,
  80.     ftUserCancel                = 9,
  81.     ftNotSupported                = 10
  82. };
  83.  
  84. typedef OSErr                             FTErr;
  85.  
  86. enum {
  87.     ftIsFTMode                    = 1 << 0,
  88.     ftNoMenus                    = 1 << 1,
  89.     ftQuiet                        = 1 << 2,
  90.     ftConfigChanged                = 1 << 4,
  91.     ftSucc                        = 1 << 7
  92. };
  93.  
  94. typedef unsigned long                     FTFlags;
  95.  
  96. enum {
  97.     ftSameCircuit                = 1 << 0,
  98.     ftSendDisable                = 1 << 1,
  99.     ftReceiveDisable            = 1 << 2,
  100.     ftTextOnly                    = 1 << 3,
  101.     ftNoStdFile                    = 1 << 4,
  102.     ftMultipleFileSend            = 1 << 5
  103. };
  104.  
  105. typedef unsigned short                     FTAttributes;
  106.  
  107. enum {
  108.     ftReceiving                    = 0,
  109.     ftTransmitting                = 1,
  110.     ftFullDuplex                = 2                                /* (16) added ftFullDuplex bit.*/
  111. };
  112.  
  113. typedef unsigned short                     FTDirection;
  114. typedef CALLBACK_API( long , FileTransferDefProcPtr )(TermHandle hTerm, short msg, long p1, long p2, long p3);
  115. /*    application routines type definitions */
  116. typedef struct FTRecord                 FTRecord;
  117. typedef FTRecord *                        FTPtr;
  118. typedef FTPtr *                            FTHandle;
  119. typedef CALLBACK_API( OSErr , FileTransferReadProcPtr )(unsigned long *count, Ptr pData, long refCon, short fileMsg);
  120. typedef CALLBACK_API( OSErr , FileTransferWriteProcPtr )(unsigned long *count, Ptr pData, long refCon, short fileMsg);
  121. typedef CALLBACK_API( Size , FileTransferSendProcPtr )(Ptr thePtr, long theSize, long refCon, CMChannel channel, CMFlags flag);
  122. typedef CALLBACK_API( Size , FileTransferReceiveProcPtr )(Ptr thePtr, long theSize, long refCon, CMChannel channel, CMFlags *flag);
  123. typedef CALLBACK_API( OSErr , FileTransferEnvironsProcPtr )(long refCon, ConnEnvironRec *theEnvirons);
  124. typedef CALLBACK_API( void , FileTransferNotificationProcPtr )(FTHandle hFT, const FSSpec *pFSSpec)/*  (15) added const */;
  125. typedef CALLBACK_API( void , FileTransferChooseIdleProcPtr )(void );
  126. typedef STACK_UPP_TYPE(FileTransferDefProcPtr)                     FileTransferDefUPP;
  127. typedef STACK_UPP_TYPE(FileTransferReadProcPtr)                 FileTransferReadUPP;
  128. typedef STACK_UPP_TYPE(FileTransferWriteProcPtr)                 FileTransferWriteUPP;
  129. typedef STACK_UPP_TYPE(FileTransferSendProcPtr)                 FileTransferSendUPP;
  130. typedef STACK_UPP_TYPE(FileTransferReceiveProcPtr)                 FileTransferReceiveUPP;
  131. typedef STACK_UPP_TYPE(FileTransferEnvironsProcPtr)             FileTransferEnvironsUPP;
  132. typedef STACK_UPP_TYPE(FileTransferNotificationProcPtr)         FileTransferNotificationUPP;
  133. typedef STACK_UPP_TYPE(FileTransferChooseIdleProcPtr)             FileTransferChooseIdleUPP;
  134.  
  135. struct FTRecord {
  136.     short                             procID;
  137.     FTFlags                         flags;
  138.     FTErr                             errCode;
  139.     long                             refCon;
  140.     long                             userData;
  141.     FileTransferDefUPP                 defProc;
  142.     Ptr                             config;
  143.     Ptr                             oldConfig;
  144.     FileTransferEnvironsUPP         environsProc;
  145.     long                             reserved1;
  146.     long                             reserved2;
  147.     Ptr                             ftPrivate;
  148.     FileTransferSendUPP             sendProc;
  149.     FileTransferReceiveUPP             recvProc;
  150.     FileTransferWriteUPP             writeProc;
  151.     FileTransferReadUPP             readProc;
  152.     WindowPtr                         owner;
  153.     FTDirection                     direction;
  154.     SFReply                         theReply;
  155.     long                             writePtr;
  156.     long                             readPtr;
  157.     Ptr                             theBuf;
  158.     long                             bufSize;
  159.     Str255                             autoRec;
  160.     FTAttributes                     attributes;
  161. };
  162.  
  163. typedef unsigned short                     FTCompletionKind;
  164.  
  165. enum {
  166.                                                                 /* FTReadProc messages */
  167.     ftReadOpenFile                = 0,                            /* count = forkFlags, buffer = pblock from PBGetFInfo */
  168.     ftReadDataFork                = 1,
  169.     ftReadRsrcFork                = 2,
  170.     ftReadAbort                    = 3,
  171.     ftReadComplete                = 4,
  172.     ftReadSetFPos                = 6,                            /* count = forkFlags, buffer = pBlock same as PBSetFPos */
  173.     ftReadGetFPos                = 7                                /* count = forkFlags, buffer = pBlock same as PBGetFPos */
  174. };
  175.  
  176.  
  177. enum {
  178.                                                                 /* FTWriteProc messages */
  179.     ftWriteOpenFile                = 0,                            /* count = forkFlags, buffer = pblock from PBGetFInfo */
  180.     ftWriteDataFork                = 1,
  181.     ftWriteRsrcFork                = 2,
  182.     ftWriteAbort                = 3,
  183.     ftWriteComplete                = 4,
  184.     ftWriteFileInfo                = 5,
  185.     ftWriteSetFPos                = 6,                            /* count = forkFlags, buffer = pBlock same as PBSetFPos */
  186.     ftWriteGetFPos                = 7                                /* count = forkFlags, buffer = pBlock same as PBGetFPos */
  187. };
  188.  
  189.  
  190. enum {
  191.                                                                 /*    fork flags */
  192.     ftOpenDataFork                = 1,
  193.     ftOpenRsrcFork                = 2
  194. };
  195.  
  196. enum { uppFileTransferDefProcInfo = 0x0000FEF0 };                 /* pascal 4_bytes Func(4_bytes, 2_bytes, 4_bytes, 4_bytes, 4_bytes) */
  197. enum { uppFileTransferReadProcInfo = 0x00002FE0 };                 /* pascal 2_bytes Func(4_bytes, 4_bytes, 4_bytes, 2_bytes) */
  198. enum { uppFileTransferWriteProcInfo = 0x00002FE0 };             /* pascal 2_bytes Func(4_bytes, 4_bytes, 4_bytes, 2_bytes) */
  199. enum { uppFileTransferSendProcInfo = 0x0000AFF0 };                 /* pascal 4_bytes Func(4_bytes, 4_bytes, 4_bytes, 2_bytes, 2_bytes) */
  200. enum { uppFileTransferReceiveProcInfo = 0x0000EFF0 };             /* pascal 4_bytes Func(4_bytes, 4_bytes, 4_bytes, 2_bytes, 4_bytes) */
  201. enum { uppFileTransferEnvironsProcInfo = 0x000003E0 };             /* pascal 2_bytes Func(4_bytes, 4_bytes) */
  202. enum { uppFileTransferNotificationProcInfo = 0x000003C0 };         /* pascal no_return_value Func(4_bytes, 4_bytes) */
  203. enum { uppFileTransferChooseIdleProcInfo = 0x00000000 };         /* pascal no_return_value Func() */
  204. #define NewFileTransferDefProc(userRoutine)                     (FileTransferDefUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppFileTransferDefProcInfo, GetCurrentArchitecture())
  205. #define NewFileTransferReadProc(userRoutine)                     (FileTransferReadUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppFileTransferReadProcInfo, GetCurrentArchitecture())
  206. #define NewFileTransferWriteProc(userRoutine)                     (FileTransferWriteUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppFileTransferWriteProcInfo, GetCurrentArchitecture())
  207. #define NewFileTransferSendProc(userRoutine)                     (FileTransferSendUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppFileTransferSendProcInfo, GetCurrentArchitecture())
  208. #define NewFileTransferReceiveProc(userRoutine)                 (FileTransferReceiveUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppFileTransferReceiveProcInfo, GetCurrentArchitecture())
  209. #define NewFileTransferEnvironsProc(userRoutine)                 (FileTransferEnvironsUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppFileTransferEnvironsProcInfo, GetCurrentArchitecture())
  210. #define NewFileTransferNotificationProc(userRoutine)             (FileTransferNotificationUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppFileTransferNotificationProcInfo, GetCurrentArchitecture())
  211. #define NewFileTransferChooseIdleProc(userRoutine)                 (FileTransferChooseIdleUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppFileTransferChooseIdleProcInfo, GetCurrentArchitecture())
  212. #define CallFileTransferDefProc(userRoutine, hTerm, msg, p1, p2, p3)  CALL_FIVE_PARAMETER_UPP((userRoutine), uppFileTransferDefProcInfo, (hTerm), (msg), (p1), (p2), (p3))
  213. #define CallFileTransferReadProc(userRoutine, count, pData, refCon, fileMsg)  CALL_FOUR_PARAMETER_UPP((userRoutine), uppFileTransferReadProcInfo, (count), (pData), (refCon), (fileMsg))
  214. #define CallFileTransferWriteProc(userRoutine, count, pData, refCon, fileMsg)  CALL_FOUR_PARAMETER_UPP((userRoutine), uppFileTransferWriteProcInfo, (count), (pData), (refCon), (fileMsg))
  215. #define CallFileTransferSendProc(userRoutine, thePtr, theSize, refCon, channel, flag)  CALL_FIVE_PARAMETER_UPP((userRoutine), uppFileTransferSendProcInfo, (thePtr), (theSize), (refCon), (channel), (flag))
  216. #define CallFileTransferReceiveProc(userRoutine, thePtr, theSize, refCon, channel, flag)  CALL_FIVE_PARAMETER_UPP((userRoutine), uppFileTransferReceiveProcInfo, (thePtr), (theSize), (refCon), (channel), (flag))
  217. #define CallFileTransferEnvironsProc(userRoutine, refCon, theEnvirons)  CALL_TWO_PARAMETER_UPP((userRoutine), uppFileTransferEnvironsProcInfo, (refCon), (theEnvirons))
  218. #define CallFileTransferNotificationProc(userRoutine, hFT, pFSSpec)  CALL_TWO_PARAMETER_UPP((userRoutine), uppFileTransferNotificationProcInfo, (hFT), (pFSSpec))
  219. #define CallFileTransferChooseIdleProc(userRoutine)             CALL_ZERO_PARAMETER_UPP((userRoutine), uppFileTransferChooseIdleProcInfo)
  220.  
  221. EXTERN_API( FTErr )
  222. InitFT                            (void);
  223.  
  224. EXTERN_API( Handle )
  225. FTGetVersion                    (FTHandle                 hFT);
  226.  
  227. EXTERN_API( short )
  228. FTGetFTVersion                    (void);
  229.  
  230. EXTERN_API( FTHandle )
  231. FTNew                            (short                     procID,
  232.                                  FTFlags                 flags,
  233.                                  FileTransferSendUPP     sendProc,
  234.                                  FileTransferReceiveUPP  recvProc,
  235.                                  FileTransferReadUPP     readProc,
  236.                                  FileTransferWriteUPP     writeProc,
  237.                                  FileTransferEnvironsUPP  environsProc,
  238.                                  WindowPtr                 owner,
  239.                                  long                     refCon,
  240.                                  long                     userData);
  241.  
  242. EXTERN_API( void )
  243. FTDispose                        (FTHandle                 hFT);
  244.  
  245. EXTERN_API( FTErr )
  246. FTStart                            (FTHandle                 hFT,
  247.                                  FTDirection             direction,
  248.                                  const SFReply *        fileInfo);
  249.  
  250. EXTERN_API( FTErr )
  251. FTAbort                            (FTHandle                 hFT);
  252.  
  253. EXTERN_API( FTErr )
  254. FTSend                            (FTHandle                 hFT,
  255.                                  short                     numFiles,
  256.                                  FSSpecArrayPtr         pFSSpec,
  257.                                  FileTransferNotificationUPP  notifyProc);
  258.  
  259. EXTERN_API( FTErr )
  260. FTReceive                        (FTHandle                 hFT,
  261.                                  FSSpecPtr                 pFSSpec,
  262.                                  FileTransferNotificationUPP  notifyProc);
  263.  
  264. EXTERN_API( void )
  265. FTExec                            (FTHandle                 hFT);
  266.  
  267. EXTERN_API( void )
  268. FTActivate                        (FTHandle                 hFT,
  269.                                  Boolean                 activate);
  270.  
  271. EXTERN_API( void )
  272. FTResume                        (FTHandle                 hFT,
  273.                                  Boolean                 resume);
  274.  
  275. EXTERN_API( Boolean )
  276. FTMenu                            (FTHandle                 hFT,
  277.                                  short                     menuID,
  278.                                  short                     item);
  279.  
  280. EXTERN_API( short )
  281. FTChoose                        (FTHandle *                hFT,
  282.                                  Point                     where,
  283.                                  FileTransferChooseIdleUPP  idleProc);
  284.  
  285. EXTERN_API( void )
  286. FTEvent                            (FTHandle                 hFT,
  287.                                  const EventRecord *    theEvent);
  288.  
  289. EXTERN_API( Boolean )
  290. FTValidate                        (FTHandle                 hFT);
  291.  
  292. EXTERN_API( void )
  293. FTDefault                        (Ptr *                    theConfig,
  294.                                  short                     procID,
  295.                                  Boolean                 allocate);
  296.  
  297. EXTERN_API( Handle )
  298. FTSetupPreflight                (short                     procID,
  299.                                  long *                    magicCookie);
  300.  
  301. EXTERN_API( void )
  302. FTSetupSetup                    (short                     procID,
  303.                                  const void *            theConfig,
  304.                                  short                     count,
  305.                                  DialogPtr                 theDialog,
  306.                                  long *                    magicCookie);
  307.  
  308. EXTERN_API( Boolean )
  309. FTSetupFilter                    (short                     procID,
  310.                                  const void *            theConfig,
  311.                                  short                     count,
  312.                                  DialogPtr                 theDialog,
  313.                                  EventRecord *            theEvent,
  314.                                  short *                theItem,
  315.                                  long *                    magicCookie);
  316.  
  317. EXTERN_API( void )
  318. FTSetupItem                        (short                     procID,
  319.                                  const void *            theConfig,
  320.                                  short                     count,
  321.                                  DialogPtr                 theDialog,
  322.                                  short *                theItem,
  323.                                  long *                    magicCookie);
  324.  
  325. EXTERN_API( void )
  326. FTSetupXCleanup                    (short                     procID,
  327.                                  const void *            theConfig,
  328.                                  short                     count,
  329.                                  DialogPtr                 theDialog,
  330.                                  Boolean                 OKed,
  331.                                  long *                    magicCookie);
  332.  
  333. EXTERN_API( void )
  334. FTSetupPostflight                (short                     procID);
  335.  
  336. EXTERN_API( Ptr )
  337. FTGetConfig                        (FTHandle                 hFT);
  338.  
  339. EXTERN_API( short )
  340. FTSetConfig                        (FTHandle                 hFT,
  341.                                  const void *            thePtr);
  342.  
  343. EXTERN_API( FTErr )
  344. FTIntlToEnglish                    (FTHandle                 hFT,
  345.                                  const void *            inputPtr,
  346.                                  Ptr *                    outputPtr,
  347.                                  short                     language);
  348.  
  349. /* (16) chenged OSErr to FTErr*/
  350. EXTERN_API( FTErr )
  351. FTEnglishToIntl                    (FTHandle                 hFT,
  352.                                  const void *            inputPtr,
  353.                                  Ptr *                    outputPtr,
  354.                                  short                     language);
  355.  
  356. /* (16) chenged OSErr to FTErr*/
  357. EXTERN_API( void )
  358. FTGetToolName                    (short                     procID,
  359.                                  Str255                 name);
  360.  
  361. EXTERN_API( short )
  362. FTGetProcID                        (ConstStr255Param         name);
  363.  
  364. EXTERN_API( void )
  365. FTSetRefCon                        (FTHandle                 hFT,
  366.                                  long                     refCon);
  367.  
  368. EXTERN_API( long )
  369. FTGetRefCon                        (FTHandle                 hFT);
  370.  
  371. EXTERN_API( void )
  372. FTSetUserData                    (FTHandle                 hFT,
  373.                                  long                     userData);
  374.  
  375. EXTERN_API( long )
  376. FTGetUserData                    (FTHandle                 hFT);
  377.  
  378. EXTERN_API( void )
  379. FTGetErrorString                (FTHandle                 hFT,
  380.                                  short                     id,
  381.                                  Str255                 errMsg);
  382.  
  383. /*
  384.     These Async routines were added to InterfaceLib in System 7.5
  385. */
  386. EXTERN_API( FTErr )
  387. FTSendAsync                        (FTHandle                 hFT,
  388.                                  short                     numFiles,
  389.                                  FSSpecArrayPtr         pFSSpec,
  390.                                  FileTransferNotificationUPP  notifyProc);
  391.  
  392. EXTERN_API( FTErr )
  393. FTReceiveAsync                    (FTHandle                 hFT,
  394.                                  FSSpecPtr                 pFSSpec,
  395.                                  FileTransferNotificationUPP  notifyProc);
  396.  
  397. EXTERN_API( FTErr )
  398. FTCompletionAsync                (FTHandle                 hFT,
  399.                                  FTCompletionKind         completionCall);
  400.  
  401.  
  402.  
  403. #if PRAGMA_STRUCT_ALIGN
  404.     #pragma options align=reset
  405. #elif PRAGMA_STRUCT_PACKPUSH
  406.     #pragma pack(pop)
  407. #elif PRAGMA_STRUCT_PACK
  408.     #pragma pack()
  409. #endif
  410.  
  411. #ifdef PRAGMA_IMPORT_OFF
  412. #pragma import off
  413. #elif PRAGMA_IMPORT
  414. #pragma import reset
  415. #endif
  416.  
  417. #ifdef __cplusplus
  418. }
  419. #endif
  420.  
  421. #endif /* __FILETRANSFERS__ */
  422.  
  423.